跳到主要内容

BM89 合并区间

https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a

package main
import . "nc_tools"
import "sort"

/*
* type Interval struct {
* Start int
* End int
* }
*/

/**
*
* @param intervals Interval类一维数组
* @return Interval类一维数组
*/
func merge( intervals []*Interval ) []*Interval {
if len(intervals) < 2 {
return intervals
}

sort.Slice(intervals, func(i, j int) bool {
return intervals[i].Start < intervals[j].Start
})

var result []*Interval
tmp := intervals[0]
n := len(intervals)

for i := 1; i < n; i++ {
if intervals[i].Start <= tmp.End {
tmp.Start = myMin(tmp.Start, intervals[i].Start)
tmp.End = myMax(tmp.End, intervals[i].End)
} else {
result = append(result, tmp)
tmp = intervals[i]
}
}
result = append(result, tmp)
return result
}

func myMin(x, y int) int {
if x < y {
return x
}
return y
}

func myMax(x, y int) int {
if x > y {
return x
}
return y
}